home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Utilities / Commodities / Yak / Source / Prefs / GadTools / Blank_window.c next >
Encoding:
C/C++ Source or Header  |  1996-02-09  |  10.2 KB  |  394 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Martin W Scott, GaĆ«l Marziou & Ph. Bastiani
  6.  */
  7.  
  8.  
  9.  
  10.  
  11. #include <exec/types.h>
  12. #include <intuition/intuition.h>
  13. #include <intuition/classes.h>
  14. #include <intuition/classusr.h>
  15. #include <intuition/imageclass.h>
  16. #include <intuition/gadgetclass.h>
  17. #include <intuition/intuitionbase.h>
  18. #include <libraries/gadtools.h>
  19. #include <proto/exec.h>
  20. #include <proto/intuition.h>
  21. #include <proto/gadtools.h>
  22. #include <proto/wb.h>
  23. #include <string.h>
  24.  
  25.  
  26. #include "yak.h"
  27. #include "version.h"
  28. #include "gui.h"
  29. #include "Blank_Window.h"
  30. #include "Settings.h"
  31. #include "yak_locale_strings.h"
  32.  
  33.  
  34. extern struct Catalog    *Catalog;
  35.  
  36. extern LONG (*HandleIDCMP)(VOID);
  37.  
  38. struct Window   *BlankWnd = NULL;
  39. struct Gadget   *BlankGList = NULL;
  40. struct Gadget   *BlankGadgets[Blank_CNT];
  41. UWORD            BlankWidth = 420;
  42. UWORD            BlankHeight = 119;
  43. UBYTE           *BlankWdt = NULL;
  44. BOOL             BlankWdi = FALSE;
  45.  
  46. struct AppWindow      *BlankAppWin;         /* AppWindow pointer */
  47. IMPORT struct MsgPort *AppMsgPort;
  48.  
  49. /* Online help system */
  50. IMPORT void ShowYakHelp(char *, char *);
  51. IMPORT char *PrefsHelp;
  52.  
  53. UBYTE *MBMethod0Labels[4];
  54. UBYTE *ScrBlMethod0Labels[5];
  55.  
  56. static VOID
  57. InitMBMethod0Labels(VOID)
  58. {
  59.     MBMethod0Labels[0] = getString(NONE_STRING);
  60.     MBMethod0Labels[1] = getString(SPRITES_STRING);
  61.     MBMethod0Labels[2] = getString(COPPER_STRING);
  62.     MBMethod0Labels[3] = NULL;
  63. }
  64.  
  65. static VOID
  66. InitScrBlMethod0Labels(VOID)
  67. {
  68.     ScrBlMethod0Labels[0] = getString(NONE_STRING);
  69.     ScrBlMethod0Labels[1] = getString(BLACKSCREEN_STRING);
  70.     ScrBlMethod0Labels[2] = getString(DMA_STRING);
  71.     ScrBlMethod0Labels[3] = getString(POWERSAVE_STRING);
  72.     ScrBlMethod0Labels[4] = NULL;
  73. }
  74.  
  75.  
  76. #define Blank_TNUM 1
  77.  
  78. struct IntuiText BlankIText[Blank_TNUM] = 
  79. {
  80.     2,0,JAM1,261,81,NULL,NULL,NULL 
  81. };
  82.  
  83.  
  84. static VOID
  85. InitBlankITexts(VOID)
  86. {
  87.    BlankIText[0].IText = getString(TIMEOUT_STRING);
  88. }
  89.  
  90.  
  91. UWORD BlankGTypes[] = 
  92. {
  93.         INTEGER_KIND,
  94.         INTEGER_KIND,
  95.         CYCLE_KIND,
  96.         BUTTON_KIND,
  97.         CHECKBOX_KIND,
  98.         CYCLE_KIND
  99. };
  100.  
  101.  
  102. struct NewGadget BlankNGad[] = 
  103. {
  104.         200, 68, 51,14,NULL,NULL,GD_ScrTONum       ,PLACETEXT_LEFT ,NULL ,SCREENTIMEOUT_STRING,
  105.         200, 83, 51,14,NULL,NULL,GD_MouseTONum     ,PLACETEXT_LEFT ,NULL ,MOUSETIMEOUT_STRING,
  106.         200, 19,213,14,NULL,NULL,GD_MBMethod       ,PLACETEXT_LEFT ,NULL ,MOUSEBLANK_METHOD_STRING,
  107.         160,103,100,13,NULL,NULL,GD_Return3        ,PLACETEXT_IN   ,NULL ,OK_STRING,
  108.           7, 35, 26,11,NULL,NULL,GD_BlankMouseOnKey,PLACETEXT_RIGHT,NULL ,BlankMouseOnKey_STRING,
  109.         200,  3,213,14,NULL,NULL,GD_ScrBlMethod    ,PLACETEXT_LEFT ,NULL ,SCREENBLANK_METHOD_STRING
  110. };
  111.  
  112.  
  113. ULONG BlankGTags[] = 
  114. {
  115.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  116.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  117.         (GTCY_Labels),(ULONG)&MBMethod0Labels[ 0 ],(TAG_DONE),
  118.         (TAG_DONE),
  119.         (GTCB_Scaled),TRUE,(TAG_DONE),
  120.         (GTCY_Labels),(ULONG)&ScrBlMethod0Labels[ 0 ],(TAG_DONE)
  121. };
  122.  
  123.  
  124.  
  125. static VOID
  126. BlankRender(VOID)
  127. {
  128.     UBYTE cnt;
  129.     UWORD X,Y, Width, Height;
  130.  
  131.     ComputeFont(BlankWidth,BlankHeight);
  132.  
  133.     Width = ComputeX( BlankWidth );
  134.  
  135.     X = Y = 0;
  136.     Height = ComputeY(50);
  137.     DrawThinBevelBox( Scr, BlankWnd->RPort, X+OffX,Y+OffY,
  138.                      Width,
  139.                      Height,
  140.                      FALSE );
  141.  
  142.  
  143.     Y += Height;
  144.     Height = ComputeY(100) - Y;
  145.     DrawThinBevelBox( Scr, BlankWnd->RPort, X+OffX,Y+OffY,
  146.                      Width,
  147.                      Height,
  148.                      FALSE );
  149.     BlankIText[ 0 ].LeftEdge  = X +5;
  150.     BlankIText[ 0 ].TopEdge   = Y +3;
  151.  
  152.     Y += Height;
  153.     Height = ComputeY(BlankHeight) - Y;
  154.     DrawThinBevelBox( Scr, BlankWnd->RPort, X+OffX,Y+OffY,
  155.                      Width,
  156.                      Height,
  157.                      FALSE );
  158.                 
  159.     for (cnt = 0; cnt < Blank_TNUM; cnt++) 
  160.     {
  161.         BlankIText[ cnt ].ITextFont = Font;
  162.         PrintIText(BlankWnd->RPort,&BlankIText[ cnt ],OffX,OffY);
  163.     }
  164. }
  165.  
  166.  
  167.  
  168. int
  169. OpenBlankWindow(VOID)
  170. {
  171.         struct NewGadget        ng;
  172.         struct Gadget   *g;
  173.         UWORD           lc,tc;
  174.         WORD            wleft=WindowLeft, wtop=WindowTop;
  175.         UWORD           ww, wh;
  176.  
  177.         ComputeFont(BlankWidth,BlankHeight);
  178.  
  179.         ww = OffX + ComputeX(BlankWidth) + Scr->WBorRight;
  180.         wh = OffY + ComputeY(BlankHeight) + Scr->WBorBottom;
  181.  
  182.         SetUpWindowCoordinates(ww, wh, &wleft, &wtop);
  183.  
  184.         if (! (g = CreateContext(&BlankGList))) 
  185.         {
  186.                 return(1L);
  187.         }
  188.  
  189.         for(lc = 0,tc = 0; lc < Blank_CNT; lc++) 
  190.         {
  191.  
  192.                 CopyMem((char *)&BlankNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
  193.  
  194.                 ng.ng_VisualInfo = VisualInfo;
  195.                 ng.ng_TextAttr   = Font;
  196.                 ng.ng_LeftEdge   = OffX +ComputeX(ng.ng_LeftEdge);
  197.                 ng.ng_TopEdge    = OffY +ComputeY(ng.ng_TopEdge);
  198.                 ng.ng_Width      = ComputeX(ng.ng_Width);
  199.                 ng.ng_Height     = ComputeY(ng.ng_Height);
  200.  
  201.                 BlankGadgets[ lc ] = g = CreateGadgetA((ULONG)BlankGTypes[ lc ],g,&ng,(struct TagItem *) &BlankGTags[ tc ]);
  202.  
  203.                 while(BlankGTags[ tc ]) 
  204.                         tc += 2;
  205.  
  206.                 tc++;
  207.  
  208.                 if (NOT g)
  209.                         return(2L);
  210.         }
  211.  
  212.     if (NOT (BlankWnd = OpenWindowTags(NULL,
  213.                         WA_Left,         wleft,
  214.                         WA_Top,          wtop,
  215.                         WA_Width,        ww,
  216.                         WA_Height,       wh,
  217.                         WA_IDCMP,        LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_RAWKEY,
  218.                         WA_Flags,        WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
  219.                         WA_Gadgets,      BlankGList,
  220.                         WA_Title,        BlankWdt,
  221.                         WA_ScreenTitle,  getString(COPYRIGHT_STRING),
  222.                         WA_PubScreen,    Scr,
  223.                         WA_PubScreenName,PubScreenName,
  224.                         TAG_DONE)))
  225.     return(4L);
  226.  
  227.     BlankAppWin = AddAppWindowA(0, 0, BlankWnd, AppMsgPort, NULL);
  228.  
  229.     GT_RefreshWindow(BlankWnd,NULL);
  230.  
  231.     BlankRender();
  232.  
  233.     return(0L);
  234. }
  235.  
  236.  
  237.  
  238. VOID
  239. CloseBlankWindow(VOID)
  240. {
  241.     CloseOneWindow(BlankWnd,NULL,BlankGList,BlankAppWin);
  242.     BlankWnd = NULL;
  243. }
  244.  
  245.  
  246.  
  247.  
  248.  
  249. /* initialise all gadgets of Blank window */
  250.  
  251. static void
  252. InitBlankGadgets(VOID)
  253. {
  254.         InitToggleGadgets(BLANK_WINDOW);
  255.  
  256.         InitWindowGadget(GDX_ScrTONum, GTIN_Number, blanksecs, BLANK_WINDOW);
  257.         InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
  258.         InitWindowGadget(GDX_MouseTONum, GTIN_Number, mblanksecs, BLANK_WINDOW);
  259.         InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
  260.         InitWindowGadget(GDX_MBMethod, GTCY_Active, mouseblank, BLANK_WINDOW);
  261.         InitWindowGadget(GDX_ScrBlMethod, GTCY_Active, screenblank, BLANK_WINDOW);
  262. }
  263.  
  264.  
  265.  
  266.  
  267.  
  268. /* handle Blank window events */
  269. LONG
  270. HandleBlankIDCMP(VOID)
  271. {
  272.     struct IntuiMessage *msg;
  273.     struct Gadget   *gadget;
  274.     ULONG           class;
  275.     UWORD           code;
  276.     LONG            num;
  277.     BOOL            close=FALSE;
  278.     LONG            ret=RET_OKAY;
  279.  
  280.     while (!close && (msg = GT_GetIMsg(BlankWnd->UserPort)))
  281.     {
  282.         class = msg->Class;
  283.         code = msg->Code;
  284.         gadget = (struct Gadget *)msg->IAddress;
  285.         GT_ReplyIMsg(msg);
  286.  
  287.         switch (class)
  288.         {
  289.           case GADGETUP:
  290.           case GADGETDOWN:
  291.             switch (gadget->GadgetID)
  292.             {
  293.               case GD_Return3:
  294.                 CloseBlankWindow();
  295.                 if (!ShowWindowID(ROOT_WINDOW))
  296.                     ret= RET_QUIT;
  297.                 close=TRUE;
  298.                 break;
  299.         
  300.               case GD_ScrTONum:
  301.                 num = GetNumber(gadget);
  302.                 if (num >= 0) 
  303.                     blanksecs = num;
  304.                 else 
  305.                     DisplayBeep(BlankWnd->WScreen);
  306.                 InitWindowGadget(GDX_ScrTONum, GTIN_Number, blanksecs, BLANK_WINDOW);
  307.                 break;
  308.  
  309.               case GD_MouseTONum:
  310.                 num = GetNumber(gadget);
  311.                 if (num >= 0) 
  312.                     mblanksecs = num;
  313.                 else 
  314.                     DisplayBeep(BlankWnd->WScreen);
  315.                 InitWindowGadget(GDX_MouseTONum, GTIN_Number, mblanksecs, BLANK_WINDOW);
  316.                 break;
  317.  
  318.               case GD_BlankMouseOnKey:
  319.                 blankmouseonkey ^= TRUE;
  320.                 break;
  321.  
  322.               case GD_MBMethod:
  323.                 mouseblank = code;
  324.                 InitWindowGadget(GDX_MouseTONum, GA_Disabled, !mouseblank, BLANK_WINDOW);
  325.                 break;
  326.  
  327.               case GD_ScrBlMethod:
  328.                 screenblank = code;
  329.                 InitWindowGadget(GDX_ScrTONum, GA_Disabled, !screenblank, BLANK_WINDOW);
  330.                 break;
  331.  
  332.  
  333.             }                   /* switch (gadget->GadgetID) */
  334.             break;
  335.  
  336.           case IDCMP_RAWKEY:
  337.                 /* Help key pressed */
  338.                 if (code == 95)
  339.                 {
  340.                     /* Display the node */
  341.                     ShowYakHelp(PrefsHelp, "Blanking");
  342.                 }
  343.                 break;
  344.  
  345.           case REFRESHWINDOW:
  346.             GT_BeginRefresh(BlankWnd);
  347.             GT_EndRefresh(BlankWnd, TRUE);
  348.             break;
  349.  
  350.         }                       /* switch (class) */
  351.  
  352.     }                           /* while more messages */
  353.  
  354.     return ret;
  355. }
  356.  
  357.  
  358.  
  359. /* show our blank window */
  360. BOOL
  361. ShowBlankWindow(VOID)
  362. {
  363.     if (!BlankWdi)
  364.     {
  365.         BlankWdi = TRUE;
  366.  
  367.         BlankWdt = getString(Blanking);
  368.         LocalizeNGadLabels (Blank_CNT, BlankNGad);
  369.         InitBlankITexts();
  370.         InitMBMethod0Labels ();
  371.         InitScrBlMethod0Labels ();
  372.     }
  373.  
  374.     if (!OpenBlankWindow())     /* like the name says... */
  375.     {
  376.         InitBlankGadgets();
  377.         wndsigflag = 1 << BlankWnd->UserPort->mp_SigBit;
  378.         curwin = BlankWnd;
  379.         curwinID = BLANK_WINDOW;
  380.         HandleIDCMP = HandleBlankIDCMP;
  381.         return TRUE;
  382.     }
  383.  
  384.     FreeGadgets(BlankGList);
  385.     CloseDownScreen();
  386.     curwin =  NULL;
  387.     wndsigflag = 0L;
  388.     return FALSE;
  389. }
  390.  
  391.  
  392.  
  393.  
  394.